package com.xbts.system.domain;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.TableLogic;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.Data;
import com.xbts.common.annotation.Excel;
import com.xbts.common.utils.StringUtils;
import com.xbts.common.core.domain.BaseEntity;

/**
 * 用户和华为云账号绑定（虚拟）对象 cn_virtually_user_hw_account
 *
 * @author xbts
 * @date 2023-11-30
 */
@Data
@ApiModel("用户和华为云账号绑定（虚拟）对象")
@TableName("cn_virtually_user_hw_account")
public class CnVirtuallyUserHwAccount extends BaseEntity {

    private static final long serialVersionUID=1L;

    /** 用户ID */
    @TableId
    private String userId;

    /** 华为云账号 */
    @Excel(name = "华为云账号")
    @ApiModelProperty("华为云账号")
    @NotEmpty(message = "华为云账号不能为空")
    private String hwAccount;

    /** 用户账号 */
    @Excel(name = "用户账号")
    @ApiModelProperty("用户账号")
    @NotEmpty(message = "用户账号不能为空")
    private String userName;

    /** 用户昵称/单位全称 */
    @Excel(name = "用户昵称/单位全称")
    @ApiModelProperty("用户昵称/单位全称")
    @NotEmpty(message = "用户昵称/单位全称不能为空")
    private String nickName;

    /** 用户余额 */
    @Excel(name = "用户余额")
    @ApiModelProperty("用户余额")
    private BigDecimal userWallet;

    /** 认证（0未认证 1已认证 ） */
    @Excel(name = "认证", readConverterExp = "0=未认证,1=已认证")
    @ApiModelProperty("认证")
    private String authentication;

    /** 凭证地址 */
    @Excel(name = "凭证地址")
    @ApiModelProperty("凭证地址")
    private String certificatePath;

    /** 通讯地址 */
    @Excel(name = "通讯地址")
    @ApiModelProperty("通讯地址")
    private String address;

    /** 通讯地址详细地址 */
    @Excel(name = "通讯地址详细地址")
    @ApiModelProperty("通讯地址详细地址")
    private String addressDetail;

    /** 真实姓名 */
    @Excel(name = "真实姓名")
    @ApiModelProperty("真实姓名")
    private String realName;

    /** 身份证号码/社会统一信用代码 */
    @Excel(name = "身份证号码/社会统一信用代码")
    @ApiModelProperty("身份证号码/社会统一信用代码")
    private String number;

    /** 用户类型（00系统用户 01普通用户 02企业用户） */
    @Excel(name = "用户类型", readConverterExp = "0=1普通用户,0=2企业用户")
    @ApiModelProperty("用户类型")
    private String userType;

    /** 用户邮箱 */
    @Excel(name = "用户邮箱")
    @ApiModelProperty("用户邮箱")
    private String email;

    /** 手机号码 */
    @Excel(name = "手机号码")
    @ApiModelProperty("手机号码")
    private String phonenumber;

    /** 删除标志（1代表存在 2代表删除） */
    @Excel(name = "删除标志（1代表存在 2代表删除）")
    @ApiModelProperty("删除标志（1代表存在 2代表删除）")
    private String delFlag;

    public<T> QueryWrapper<T> queryWrapper(){
        QueryWrapper<T> queryWrapper=new QueryWrapper<>();
        queryWrapper.like(StringUtils.isNotEmpty(userId),"user_id",userId);
        queryWrapper.like(StringUtils.isNotEmpty(hwAccount),"hw_account",hwAccount);
        queryWrapper.like(StringUtils.isNotEmpty(userName),"user_name",userName);
        queryWrapper.like(StringUtils.isNotEmpty(nickName),"nick_name",nickName);
        queryWrapper.like(StringUtils.isNotEmpty(authentication),"authentication",authentication);
        queryWrapper.like(StringUtils.isNotEmpty(certificatePath),"certificate_path",certificatePath);
        queryWrapper.like(StringUtils.isNotEmpty(address),"address",address);
        queryWrapper.like(StringUtils.isNotEmpty(addressDetail),"address_detail",addressDetail);
        queryWrapper.like(StringUtils.isNotEmpty(realName),"real_name",realName);
        queryWrapper.like(StringUtils.isNotEmpty(number),"number",number);
        queryWrapper.like(StringUtils.isNotEmpty(userType),"user_type",userType);
        queryWrapper.like(StringUtils.isNotEmpty(email),"email",email);
        queryWrapper.like(StringUtils.isNotEmpty(phonenumber),"phonenumber",phonenumber);
        queryWrapper.eq("del_flag", 1);
        return queryWrapper;
    }
}